/**
 */
package OBSL.impl;

import OBSL.AbsentIndividual;
import OBSL.AntiRigidSubstanceIndividual;
import OBSL.Comparator;
import OBSL.GeneralizationLink;
import OBSL.Individual;
import OBSL.KindIndividual;
import OBSL.KindRuleset;
import OBSL.MaterialAssociationLink;
import OBSL.MediationLink;
import OBSL.ModeCharacterizationLink;
import OBSL.ModeIndividual;
import OBSL.ModeRuleset;
import OBSL.OBSLFactory;
import OBSL.OBSLPackage;
import OBSL.Parameter;
import OBSL.PhaseIndividual;
import OBSL.PhasePartitionRuleset;
import OBSL.PresentIndividual;
import OBSL.QualityCharacterizationLink;
import OBSL.QualityIndividual;
import OBSL.QualityParameter;
import OBSL.QualityRelation;
import OBSL.QualityRuleset;
import OBSL.RelatorIndividual;
import OBSL.RelatorRuleset;
import OBSL.RoleIndividual;
import OBSL.RuleType;
import OBSL.Ruleset;
import OBSL.Situation;
import OBSL.Specification;
import OBSL.SubKindIndividual;
import OBSL.SubKindRuleset;
import OBSL.SubParameter;
import OBSL.SubSituation;
import OBSL.SubstanceIndividual;
import OBSL.TemporalParameter;
import OBSL.TopLevelSituation;
import OBSL.TransitionRule;
import OBSL.util.OBSLValidator;
import RefOntoUML.RefOntoUMLPackage;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EValidator;
import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class OBSLPackageImpl extends EPackageImpl implements OBSLPackage {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass specificationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass rulesetEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass kindRulesetEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass subKindRulesetEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass relatorRulesetEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass phasePartitionRulesetEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass qualityRulesetEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass modeRulesetEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass transitionRuleEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass situationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass topLevelSituationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass subSituationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass parameterEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass subParameterEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass temporalParameterEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass individualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass absentIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass presentIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass substanceIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass kindIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass subKindIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass antiRigidSubstanceIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass roleIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass phaseIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass relatorIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass modeIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass qualityIndividualEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass generalizationLinkEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass modeCharacterizationLinkEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass qualityCharacterizationLinkEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass mediationLinkEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass materialAssociationLinkEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass qualityParameterEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass qualityRelationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum comparatorEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum ruleTypeEEnum = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see OBSL.OBSLPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private OBSLPackageImpl() {
		super(eNS_URI, OBSLFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link OBSLPackage#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static OBSLPackage init() {
		if (isInited) return (OBSLPackage)EPackage.Registry.INSTANCE.getEPackage(OBSLPackage.eNS_URI);

		// Obtain or create and register package
		OBSLPackageImpl theOBSLPackage = (OBSLPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof OBSLPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new OBSLPackageImpl());

		isInited = true;

		// Initialize simple dependencies
		RefOntoUMLPackage.eINSTANCE.eClass();

		// Create package meta-data objects
		theOBSLPackage.createPackageContents();

		// Initialize created meta-data
		theOBSLPackage.initializePackageContents();

		// Register package validator
		EValidator.Registry.INSTANCE.put
			(theOBSLPackage, 
			 new EValidator.Descriptor() {
				 public EValidator getEValidator() {
					 return OBSLValidator.INSTANCE;
				 }
			 });

		// Mark meta-data to indicate it can't be changed
		theOBSLPackage.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(OBSLPackage.eNS_URI, theOBSLPackage);
		return theOBSLPackage;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSpecification() {
		return specificationEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSpecification_Rulesets() {
		return (EReference)specificationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSpecification_Model() {
		return (EReference)specificationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getRuleset() {
		return rulesetEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getRuleset_Name() {
		return (EAttribute)rulesetEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getRuleset_Rules() {
		return (EReference)rulesetEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getRuleset__ClassifiedBy() {
		return rulesetEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getRuleset__DefiningIndividuals() {
		return rulesetEClass.getEOperations().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getKindRuleset() {
		return kindRulesetEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getKindRuleset_Kind() {
		return (EReference)kindRulesetEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getKindRuleset__ClassifiedBy() {
		return kindRulesetEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSubKindRuleset() {
		return subKindRulesetEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSubKindRuleset_Subkind() {
		return (EReference)subKindRulesetEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getSubKindRuleset__ClassifiedBy() {
		return subKindRulesetEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getRelatorRuleset() {
		return relatorRulesetEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getRelatorRuleset_Relator() {
		return (EReference)relatorRulesetEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getRelatorRuleset__ClassifiedBy() {
		return relatorRulesetEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getPhasePartitionRuleset() {
		return phasePartitionRulesetEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getPhasePartitionRuleset_Partition() {
		return (EReference)phasePartitionRulesetEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getPhasePartitionRuleset__ClassifiedBy() {
		return phasePartitionRulesetEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getPhasePartitionRuleset__Bearer() {
		return phasePartitionRulesetEClass.getEOperations().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getPhasePartitionRuleset__Phases() {
		return phasePartitionRulesetEClass.getEOperations().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getQualityRuleset() {
		return qualityRulesetEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getQualityRuleset_Quality() {
		return (EReference)qualityRulesetEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getQualityRuleset_Bearer() {
		return (EReference)qualityRulesetEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getModeRuleset() {
		return modeRulesetEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getModeRuleset_Mode() {
		return (EReference)modeRulesetEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getModeRuleset_BearerIndividual() {
		return (EReference)modeRulesetEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getModeRuleset__ClassifiedBy() {
		return modeRulesetEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getTransitionRule() {
		return transitionRuleEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getTransitionRule_Name() {
		return (EAttribute)transitionRuleEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTransitionRule_Ruleset() {
		return (EReference)transitionRuleEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTransitionRule_Before() {
		return (EReference)transitionRuleEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTransitionRule_After() {
		return (EReference)transitionRuleEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTransitionRule_DefiningLink() {
		return (EReference)transitionRuleEClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTransitionRule_Comparisons() {
		return (EReference)transitionRuleEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getTransitionRule_Type() {
		return (EAttribute)transitionRuleEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getTransitionRule__OtherLinks() {
		return transitionRuleEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSituation() {
		return situationEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSituation_Name() {
		return (EAttribute)situationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSituation_Individuals() {
		return (EReference)situationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSituation_MaterialAssociations() {
		return (EReference)situationEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSituation_Subsituations() {
		return (EReference)situationEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getTopLevelSituation() {
		return topLevelSituationEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTopLevelSituation_QualityParameters() {
		return (EReference)topLevelSituationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTopLevelSituation_Parameters() {
		return (EReference)topLevelSituationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTopLevelSituation_DefiningIndividualParameter() {
		return (EReference)topLevelSituationEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSubSituation() {
		return subSituationEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSubSituation_Supersituation() {
		return (EReference)subSituationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSubSituation_Parameters() {
		return (EReference)subSituationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSubSituation_Obtains() {
		return (EAttribute)subSituationEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getParameter() {
		return parameterEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getParameter_ValueFor() {
		return (EReference)parameterEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSubParameter() {
		return subParameterEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSubParameter_ReferenceTo() {
		return (EReference)subParameterEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getTemporalParameter() {
		return temporalParameterEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTemporalParameter_LinksTo() {
		return (EReference)temporalParameterEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTemporalParameter_LinkedFrom() {
		return (EReference)temporalParameterEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getIndividual() {
		return individualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getIndividual_ParameterizedBy() {
		return (EReference)individualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getAbsentIndividual() {
		return absentIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getPresentIndividual() {
		return presentIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getPresentIndividual_AssignedTo() {
		return (EReference)presentIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getPresentIndividual__ClassifiedBy() {
		return presentIndividualEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSubstanceIndividual() {
		return substanceIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSubstanceIndividual_Generalization() {
		return (EReference)substanceIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSubstanceIndividual_Specialization() {
		return (EReference)substanceIndividualEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getKindIndividual() {
		return kindIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getKindIndividual_Kind() {
		return (EReference)kindIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getKindIndividual__ClassifiedBy() {
		return kindIndividualEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSubKindIndividual() {
		return subKindIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getSubKindIndividual_Subkind() {
		return (EReference)subKindIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getSubKindIndividual__ClassifiedBy() {
		return subKindIndividualEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getAntiRigidSubstanceIndividual() {
		return antiRigidSubstanceIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getAntiRigidSubstanceIndividual_Obtains() {
		return (EAttribute)antiRigidSubstanceIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getRoleIndividual() {
		return roleIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getRoleIndividual_Role() {
		return (EReference)roleIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getRoleIndividual__ClassifiedBy() {
		return roleIndividualEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getPhaseIndividual() {
		return phaseIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getPhaseIndividual_Phase() {
		return (EReference)phaseIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getPhaseIndividual__ClassifiedBy() {
		return phaseIndividualEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getRelatorIndividual() {
		return relatorIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getRelatorIndividual_Relator() {
		return (EReference)relatorIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getRelatorIndividual_Mediates() {
		return (EReference)relatorIndividualEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getRelatorIndividual__ClassifiedBy() {
		return relatorIndividualEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getModeIndividual() {
		return modeIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getModeIndividual_Mode() {
		return (EReference)modeIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getModeIndividual_Characterizes() {
		return (EReference)modeIndividualEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EOperation getModeIndividual__ClassifiedBy() {
		return modeIndividualEClass.getEOperations().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getQualityIndividual() {
		return qualityIndividualEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getQualityIndividual_Quality() {
		return (EReference)qualityIndividualEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getQualityIndividual_Characterizes() {
		return (EReference)qualityIndividualEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getGeneralizationLink() {
		return generalizationLinkEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGeneralizationLink_Generalization() {
		return (EReference)generalizationLinkEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGeneralizationLink_Specific() {
		return (EReference)generalizationLinkEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGeneralizationLink_General() {
		return (EReference)generalizationLinkEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getModeCharacterizationLink() {
		return modeCharacterizationLinkEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getModeCharacterizationLink_Characterization() {
		return (EReference)modeCharacterizationLinkEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getModeCharacterizationLink_Mode() {
		return (EReference)modeCharacterizationLinkEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getModeCharacterizationLink_Bearer() {
		return (EReference)modeCharacterizationLinkEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getQualityCharacterizationLink() {
		return qualityCharacterizationLinkEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getQualityCharacterizationLink_Quality() {
		return (EReference)qualityCharacterizationLinkEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getQualityCharacterizationLink_Bearer() {
		return (EReference)qualityCharacterizationLinkEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getMediationLink() {
		return mediationLinkEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMediationLink_Mediation() {
		return (EReference)mediationLinkEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMediationLink_Relator() {
		return (EReference)mediationLinkEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMediationLink_Role() {
		return (EReference)mediationLinkEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getMaterialAssociationLink() {
		return materialAssociationLinkEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMaterialAssociationLink_MaterialAssociation() {
		return (EReference)materialAssociationLinkEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMaterialAssociationLink_End1() {
		return (EReference)materialAssociationLinkEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMaterialAssociationLink_End2() {
		return (EReference)materialAssociationLinkEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getQualityParameter() {
		return qualityParameterEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getQualityRelation() {
		return qualityRelationEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getQualityRelation_Source() {
		return (EReference)qualityRelationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getQualityRelation_Target() {
		return (EReference)qualityRelationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getQualityRelation_Comparator() {
		return (EAttribute)qualityRelationEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getComparator() {
		return comparatorEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getRuleType() {
		return ruleTypeEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public OBSLFactory getOBSLFactory() {
		return (OBSLFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		specificationEClass = createEClass(SPECIFICATION);
		createEReference(specificationEClass, SPECIFICATION__RULESETS);
		createEReference(specificationEClass, SPECIFICATION__MODEL);

		rulesetEClass = createEClass(RULESET);
		createEAttribute(rulesetEClass, RULESET__NAME);
		createEReference(rulesetEClass, RULESET__RULES);
		createEOperation(rulesetEClass, RULESET___CLASSIFIED_BY);
		createEOperation(rulesetEClass, RULESET___DEFINING_INDIVIDUALS);

		kindRulesetEClass = createEClass(KIND_RULESET);
		createEReference(kindRulesetEClass, KIND_RULESET__KIND);
		createEOperation(kindRulesetEClass, KIND_RULESET___CLASSIFIED_BY);

		subKindRulesetEClass = createEClass(SUB_KIND_RULESET);
		createEReference(subKindRulesetEClass, SUB_KIND_RULESET__SUBKIND);
		createEOperation(subKindRulesetEClass, SUB_KIND_RULESET___CLASSIFIED_BY);

		relatorRulesetEClass = createEClass(RELATOR_RULESET);
		createEReference(relatorRulesetEClass, RELATOR_RULESET__RELATOR);
		createEOperation(relatorRulesetEClass, RELATOR_RULESET___CLASSIFIED_BY);

		phasePartitionRulesetEClass = createEClass(PHASE_PARTITION_RULESET);
		createEReference(phasePartitionRulesetEClass, PHASE_PARTITION_RULESET__PARTITION);
		createEOperation(phasePartitionRulesetEClass, PHASE_PARTITION_RULESET___CLASSIFIED_BY);
		createEOperation(phasePartitionRulesetEClass, PHASE_PARTITION_RULESET___BEARER);
		createEOperation(phasePartitionRulesetEClass, PHASE_PARTITION_RULESET___PHASES);

		qualityRulesetEClass = createEClass(QUALITY_RULESET);
		createEReference(qualityRulesetEClass, QUALITY_RULESET__QUALITY);
		createEReference(qualityRulesetEClass, QUALITY_RULESET__BEARER);

		modeRulesetEClass = createEClass(MODE_RULESET);
		createEReference(modeRulesetEClass, MODE_RULESET__MODE);
		createEReference(modeRulesetEClass, MODE_RULESET__BEARER_INDIVIDUAL);
		createEOperation(modeRulesetEClass, MODE_RULESET___CLASSIFIED_BY);

		transitionRuleEClass = createEClass(TRANSITION_RULE);
		createEAttribute(transitionRuleEClass, TRANSITION_RULE__NAME);
		createEReference(transitionRuleEClass, TRANSITION_RULE__RULESET);
		createEReference(transitionRuleEClass, TRANSITION_RULE__BEFORE);
		createEReference(transitionRuleEClass, TRANSITION_RULE__AFTER);
		createEReference(transitionRuleEClass, TRANSITION_RULE__COMPARISONS);
		createEAttribute(transitionRuleEClass, TRANSITION_RULE__TYPE);
		createEReference(transitionRuleEClass, TRANSITION_RULE__DEFINING_LINK);
		createEOperation(transitionRuleEClass, TRANSITION_RULE___OTHER_LINKS);

		situationEClass = createEClass(SITUATION);
		createEAttribute(situationEClass, SITUATION__NAME);
		createEReference(situationEClass, SITUATION__INDIVIDUALS);
		createEReference(situationEClass, SITUATION__MATERIAL_ASSOCIATIONS);
		createEReference(situationEClass, SITUATION__SUBSITUATIONS);

		topLevelSituationEClass = createEClass(TOP_LEVEL_SITUATION);
		createEReference(topLevelSituationEClass, TOP_LEVEL_SITUATION__QUALITY_PARAMETERS);
		createEReference(topLevelSituationEClass, TOP_LEVEL_SITUATION__PARAMETERS);
		createEReference(topLevelSituationEClass, TOP_LEVEL_SITUATION__DEFINING_INDIVIDUAL_PARAMETER);

		subSituationEClass = createEClass(SUB_SITUATION);
		createEReference(subSituationEClass, SUB_SITUATION__SUPERSITUATION);
		createEReference(subSituationEClass, SUB_SITUATION__PARAMETERS);
		createEAttribute(subSituationEClass, SUB_SITUATION__OBTAINS);

		parameterEClass = createEClass(PARAMETER);
		createEReference(parameterEClass, PARAMETER__VALUE_FOR);

		subParameterEClass = createEClass(SUB_PARAMETER);
		createEReference(subParameterEClass, SUB_PARAMETER__REFERENCE_TO);

		temporalParameterEClass = createEClass(TEMPORAL_PARAMETER);
		createEReference(temporalParameterEClass, TEMPORAL_PARAMETER__LINKS_TO);
		createEReference(temporalParameterEClass, TEMPORAL_PARAMETER__LINKED_FROM);

		individualEClass = createEClass(INDIVIDUAL);
		createEReference(individualEClass, INDIVIDUAL__PARAMETERIZED_BY);

		absentIndividualEClass = createEClass(ABSENT_INDIVIDUAL);

		presentIndividualEClass = createEClass(PRESENT_INDIVIDUAL);
		createEReference(presentIndividualEClass, PRESENT_INDIVIDUAL__ASSIGNED_TO);
		createEOperation(presentIndividualEClass, PRESENT_INDIVIDUAL___CLASSIFIED_BY);

		substanceIndividualEClass = createEClass(SUBSTANCE_INDIVIDUAL);
		createEReference(substanceIndividualEClass, SUBSTANCE_INDIVIDUAL__GENERALIZATION);
		createEReference(substanceIndividualEClass, SUBSTANCE_INDIVIDUAL__SPECIALIZATION);

		kindIndividualEClass = createEClass(KIND_INDIVIDUAL);
		createEReference(kindIndividualEClass, KIND_INDIVIDUAL__KIND);
		createEOperation(kindIndividualEClass, KIND_INDIVIDUAL___CLASSIFIED_BY);

		subKindIndividualEClass = createEClass(SUB_KIND_INDIVIDUAL);
		createEReference(subKindIndividualEClass, SUB_KIND_INDIVIDUAL__SUBKIND);
		createEOperation(subKindIndividualEClass, SUB_KIND_INDIVIDUAL___CLASSIFIED_BY);

		antiRigidSubstanceIndividualEClass = createEClass(ANTI_RIGID_SUBSTANCE_INDIVIDUAL);
		createEAttribute(antiRigidSubstanceIndividualEClass, ANTI_RIGID_SUBSTANCE_INDIVIDUAL__OBTAINS);

		roleIndividualEClass = createEClass(ROLE_INDIVIDUAL);
		createEReference(roleIndividualEClass, ROLE_INDIVIDUAL__ROLE);
		createEOperation(roleIndividualEClass, ROLE_INDIVIDUAL___CLASSIFIED_BY);

		phaseIndividualEClass = createEClass(PHASE_INDIVIDUAL);
		createEReference(phaseIndividualEClass, PHASE_INDIVIDUAL__PHASE);
		createEOperation(phaseIndividualEClass, PHASE_INDIVIDUAL___CLASSIFIED_BY);

		relatorIndividualEClass = createEClass(RELATOR_INDIVIDUAL);
		createEReference(relatorIndividualEClass, RELATOR_INDIVIDUAL__RELATOR);
		createEReference(relatorIndividualEClass, RELATOR_INDIVIDUAL__MEDIATES);
		createEOperation(relatorIndividualEClass, RELATOR_INDIVIDUAL___CLASSIFIED_BY);

		modeIndividualEClass = createEClass(MODE_INDIVIDUAL);
		createEReference(modeIndividualEClass, MODE_INDIVIDUAL__MODE);
		createEReference(modeIndividualEClass, MODE_INDIVIDUAL__CHARACTERIZES);
		createEOperation(modeIndividualEClass, MODE_INDIVIDUAL___CLASSIFIED_BY);

		qualityIndividualEClass = createEClass(QUALITY_INDIVIDUAL);
		createEReference(qualityIndividualEClass, QUALITY_INDIVIDUAL__QUALITY);
		createEReference(qualityIndividualEClass, QUALITY_INDIVIDUAL__CHARACTERIZES);

		generalizationLinkEClass = createEClass(GENERALIZATION_LINK);
		createEReference(generalizationLinkEClass, GENERALIZATION_LINK__GENERALIZATION);
		createEReference(generalizationLinkEClass, GENERALIZATION_LINK__SPECIFIC);
		createEReference(generalizationLinkEClass, GENERALIZATION_LINK__GENERAL);

		modeCharacterizationLinkEClass = createEClass(MODE_CHARACTERIZATION_LINK);
		createEReference(modeCharacterizationLinkEClass, MODE_CHARACTERIZATION_LINK__CHARACTERIZATION);
		createEReference(modeCharacterizationLinkEClass, MODE_CHARACTERIZATION_LINK__MODE);
		createEReference(modeCharacterizationLinkEClass, MODE_CHARACTERIZATION_LINK__BEARER);

		qualityCharacterizationLinkEClass = createEClass(QUALITY_CHARACTERIZATION_LINK);
		createEReference(qualityCharacterizationLinkEClass, QUALITY_CHARACTERIZATION_LINK__QUALITY);
		createEReference(qualityCharacterizationLinkEClass, QUALITY_CHARACTERIZATION_LINK__BEARER);

		mediationLinkEClass = createEClass(MEDIATION_LINK);
		createEReference(mediationLinkEClass, MEDIATION_LINK__MEDIATION);
		createEReference(mediationLinkEClass, MEDIATION_LINK__RELATOR);
		createEReference(mediationLinkEClass, MEDIATION_LINK__ROLE);

		materialAssociationLinkEClass = createEClass(MATERIAL_ASSOCIATION_LINK);
		createEReference(materialAssociationLinkEClass, MATERIAL_ASSOCIATION_LINK__MATERIAL_ASSOCIATION);
		createEReference(materialAssociationLinkEClass, MATERIAL_ASSOCIATION_LINK__END1);
		createEReference(materialAssociationLinkEClass, MATERIAL_ASSOCIATION_LINK__END2);

		qualityParameterEClass = createEClass(QUALITY_PARAMETER);

		qualityRelationEClass = createEClass(QUALITY_RELATION);
		createEReference(qualityRelationEClass, QUALITY_RELATION__SOURCE);
		createEReference(qualityRelationEClass, QUALITY_RELATION__TARGET);
		createEAttribute(qualityRelationEClass, QUALITY_RELATION__COMPARATOR);

		// Create enums
		ruleTypeEEnum = createEEnum(RULE_TYPE);
		comparatorEEnum = createEEnum(COMPARATOR);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Obtain other dependent packages
		RefOntoUMLPackage theRefOntoUMLPackage = (RefOntoUMLPackage)EPackage.Registry.INSTANCE.getEPackage(RefOntoUMLPackage.eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes
		kindRulesetEClass.getESuperTypes().add(this.getRuleset());
		subKindRulesetEClass.getESuperTypes().add(this.getRuleset());
		relatorRulesetEClass.getESuperTypes().add(this.getRuleset());
		phasePartitionRulesetEClass.getESuperTypes().add(this.getRuleset());
		qualityRulesetEClass.getESuperTypes().add(this.getRuleset());
		modeRulesetEClass.getESuperTypes().add(this.getRuleset());
		topLevelSituationEClass.getESuperTypes().add(this.getSituation());
		subSituationEClass.getESuperTypes().add(this.getSituation());
		subParameterEClass.getESuperTypes().add(this.getParameter());
		temporalParameterEClass.getESuperTypes().add(this.getParameter());
		absentIndividualEClass.getESuperTypes().add(this.getIndividual());
		presentIndividualEClass.getESuperTypes().add(this.getIndividual());
		substanceIndividualEClass.getESuperTypes().add(this.getPresentIndividual());
		kindIndividualEClass.getESuperTypes().add(this.getSubstanceIndividual());
		subKindIndividualEClass.getESuperTypes().add(this.getSubstanceIndividual());
		antiRigidSubstanceIndividualEClass.getESuperTypes().add(this.getSubstanceIndividual());
		roleIndividualEClass.getESuperTypes().add(this.getAntiRigidSubstanceIndividual());
		phaseIndividualEClass.getESuperTypes().add(this.getAntiRigidSubstanceIndividual());
		relatorIndividualEClass.getESuperTypes().add(this.getPresentIndividual());
		modeIndividualEClass.getESuperTypes().add(this.getPresentIndividual());
		qualityIndividualEClass.getESuperTypes().add(this.getIndividual());
		qualityParameterEClass.getESuperTypes().add(this.getTemporalParameter());

		// Initialize classes, features, and operations; add parameters
		initEClass(specificationEClass, Specification.class, "Specification", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSpecification_Rulesets(), this.getRuleset(), null, "rulesets", null, 0, -1, Specification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSpecification_Model(), theRefOntoUMLPackage.getModel(), null, "model", null, 1, 1, Specification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(rulesetEClass, Ruleset.class, "Ruleset", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getRuleset_Name(), ecorePackage.getEString(), "name", null, 1, 1, Ruleset.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getRuleset_Rules(), this.getTransitionRule(), this.getTransitionRule_Ruleset(), "rules", null, 0, -1, Ruleset.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getRuleset__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getRuleset__DefiningIndividuals(), this.getIndividual(), "definingIndividuals", 0, -1, IS_UNIQUE, !IS_ORDERED);

		initEClass(kindRulesetEClass, KindRuleset.class, "KindRuleset", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getKindRuleset_Kind(), theRefOntoUMLPackage.getKind(), null, "kind", null, 1, 1, KindRuleset.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getKindRuleset__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(subKindRulesetEClass, SubKindRuleset.class, "SubKindRuleset", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSubKindRuleset_Subkind(), theRefOntoUMLPackage.getSubKind(), null, "subkind", null, 1, 1, SubKindRuleset.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getSubKindRuleset__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(relatorRulesetEClass, RelatorRuleset.class, "RelatorRuleset", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getRelatorRuleset_Relator(), theRefOntoUMLPackage.getRelator(), null, "relator", null, 1, 1, RelatorRuleset.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getRelatorRuleset__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(phasePartitionRulesetEClass, PhasePartitionRuleset.class, "PhasePartitionRuleset", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getPhasePartitionRuleset_Partition(), theRefOntoUMLPackage.getGeneralizationSet(), null, "partition", null, 1, 1, PhasePartitionRuleset.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getPhasePartitionRuleset__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getPhasePartitionRuleset__Bearer(), theRefOntoUMLPackage.getSortalClass(), "bearer", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEOperation(getPhasePartitionRuleset__Phases(), theRefOntoUMLPackage.getPhase(), "phases", 0, -1, !IS_UNIQUE, !IS_ORDERED);

		initEClass(qualityRulesetEClass, QualityRuleset.class, "QualityRuleset", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getQualityRuleset_Quality(), theRefOntoUMLPackage.getProperty(), null, "quality", null, 1, 1, QualityRuleset.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getQualityRuleset_Bearer(), theRefOntoUMLPackage.getClassifier(), null, "bearer", null, 1, 1, QualityRuleset.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

		initEClass(modeRulesetEClass, ModeRuleset.class, "ModeRuleset", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getModeRuleset_Mode(), theRefOntoUMLPackage.getMode(), null, "mode", null, 1, 1, ModeRuleset.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getModeRuleset_BearerIndividual(), this.getPresentIndividual(), null, "bearerIndividual", null, 0, -1, ModeRuleset.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		initEOperation(getModeRuleset__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(transitionRuleEClass, TransitionRule.class, "TransitionRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getTransitionRule_Name(), ecorePackage.getEString(), "name", null, 1, 1, TransitionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTransitionRule_Ruleset(), this.getRuleset(), this.getRuleset_Rules(), "ruleset", null, 1, 1, TransitionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTransitionRule_Before(), this.getTopLevelSituation(), null, "before", null, 1, 1, TransitionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTransitionRule_After(), this.getTopLevelSituation(), null, "after", null, 1, 1, TransitionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTransitionRule_Comparisons(), this.getQualityRelation(), null, "comparisons", null, 0, -1, TransitionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEAttribute(getTransitionRule_Type(), this.getRuleType(), "type", null, 1, 1, TransitionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTransitionRule_DefiningLink(), this.getTemporalParameter(), null, "definingLink", null, 1, 1, TransitionRule.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

		initEOperation(getTransitionRule__OtherLinks(), this.getTemporalParameter(), "otherLinks", 0, -1, IS_UNIQUE, !IS_ORDERED);

		initEClass(situationEClass, Situation.class, "Situation", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getSituation_Name(), ecorePackage.getEString(), "name", null, 1, 1, Situation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSituation_Individuals(), this.getIndividual(), null, "individuals", null, 0, -1, Situation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getSituation_MaterialAssociations(), this.getMaterialAssociationLink(), null, "materialAssociations", null, 0, -1, Situation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getSituation_Subsituations(), this.getSubSituation(), this.getSubSituation_Supersituation(), "subsituations", null, 0, -1, Situation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		initEClass(topLevelSituationEClass, TopLevelSituation.class, "TopLevelSituation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTopLevelSituation_QualityParameters(), this.getQualityParameter(), null, "qualityParameters", null, 0, -1, TopLevelSituation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getTopLevelSituation_Parameters(), this.getTemporalParameter(), null, "parameters", null, 0, -1, TopLevelSituation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEReference(getTopLevelSituation_DefiningIndividualParameter(), this.getTemporalParameter(), null, "definingIndividualParameter", null, 1, 1, TopLevelSituation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(subSituationEClass, SubSituation.class, "SubSituation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSubSituation_Supersituation(), this.getSituation(), this.getSituation_Subsituations(), "supersituation", null, 1, 1, SubSituation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSubSituation_Parameters(), this.getSubParameter(), null, "parameters", null, 0, -1, SubSituation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
		initEAttribute(getSubSituation_Obtains(), ecorePackage.getEBoolean(), "obtains", "false", 1, 1, SubSituation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(parameterEClass, Parameter.class, "Parameter", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getParameter_ValueFor(), this.getIndividual(), this.getIndividual_ParameterizedBy(), "valueFor", null, 1, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(subParameterEClass, SubParameter.class, "SubParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSubParameter_ReferenceTo(), this.getPresentIndividual(), this.getPresentIndividual_AssignedTo(), "referenceTo", null, 0, 1, SubParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(temporalParameterEClass, TemporalParameter.class, "TemporalParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTemporalParameter_LinksTo(), this.getTemporalParameter(), this.getTemporalParameter_LinkedFrom(), "linksTo", null, 1, 1, TemporalParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTemporalParameter_LinkedFrom(), this.getTemporalParameter(), this.getTemporalParameter_LinksTo(), "linkedFrom", null, 1, 1, TemporalParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(individualEClass, Individual.class, "Individual", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getIndividual_ParameterizedBy(), this.getParameter(), this.getParameter_ValueFor(), "parameterizedBy", null, 0, -1, Individual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		initEClass(absentIndividualEClass, AbsentIndividual.class, "AbsentIndividual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(presentIndividualEClass, PresentIndividual.class, "PresentIndividual", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getPresentIndividual_AssignedTo(), this.getSubParameter(), this.getSubParameter_ReferenceTo(), "assignedTo", null, 0, 1, PresentIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getPresentIndividual__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(substanceIndividualEClass, SubstanceIndividual.class, "SubstanceIndividual", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSubstanceIndividual_Generalization(), this.getGeneralizationLink(), this.getGeneralizationLink_Specific(), "generalization", null, 0, 1, SubstanceIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getSubstanceIndividual_Specialization(), this.getGeneralizationLink(), this.getGeneralizationLink_General(), "specialization", null, 0, -1, SubstanceIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);

		initEClass(kindIndividualEClass, KindIndividual.class, "KindIndividual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getKindIndividual_Kind(), theRefOntoUMLPackage.getKind(), null, "kind", null, 1, 1, KindIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getKindIndividual__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(subKindIndividualEClass, SubKindIndividual.class, "SubKindIndividual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getSubKindIndividual_Subkind(), theRefOntoUMLPackage.getSubKind(), null, "subkind", null, 1, 1, SubKindIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getSubKindIndividual__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(antiRigidSubstanceIndividualEClass, AntiRigidSubstanceIndividual.class, "AntiRigidSubstanceIndividual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getAntiRigidSubstanceIndividual_Obtains(), ecorePackage.getEBoolean(), "obtains", "true", 1, 1, AntiRigidSubstanceIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(roleIndividualEClass, RoleIndividual.class, "RoleIndividual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getRoleIndividual_Role(), theRefOntoUMLPackage.getRole(), null, "role", null, 1, 1, RoleIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getRoleIndividual__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(phaseIndividualEClass, PhaseIndividual.class, "PhaseIndividual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getPhaseIndividual_Phase(), theRefOntoUMLPackage.getPhase(), null, "phase", null, 1, 1, PhaseIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getPhaseIndividual__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(relatorIndividualEClass, RelatorIndividual.class, "RelatorIndividual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getRelatorIndividual_Relator(), theRefOntoUMLPackage.getRelator(), null, "relator", null, 1, 1, RelatorIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getRelatorIndividual_Mediates(), this.getMediationLink(), this.getMediationLink_Relator(), "mediates", null, 0, -1, RelatorIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getRelatorIndividual__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(modeIndividualEClass, ModeIndividual.class, "ModeIndividual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getModeIndividual_Mode(), theRefOntoUMLPackage.getMode(), null, "mode", null, 1, 1, ModeIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getModeIndividual_Characterizes(), this.getModeCharacterizationLink(), this.getModeCharacterizationLink_Mode(), "characterizes", null, 1, 1, ModeIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEOperation(getModeIndividual__ClassifiedBy(), theRefOntoUMLPackage.getClassifier(), "classifiedBy", 1, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(qualityIndividualEClass, QualityIndividual.class, "QualityIndividual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getQualityIndividual_Quality(), theRefOntoUMLPackage.getProperty(), null, "quality", null, 1, 1, QualityIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getQualityIndividual_Characterizes(), this.getQualityCharacterizationLink(), this.getQualityCharacterizationLink_Quality(), "characterizes", null, 1, 1, QualityIndividual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(generalizationLinkEClass, GeneralizationLink.class, "GeneralizationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getGeneralizationLink_Generalization(), theRefOntoUMLPackage.getGeneralization(), null, "generalization", null, 1, 1, GeneralizationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getGeneralizationLink_Specific(), this.getSubstanceIndividual(), this.getSubstanceIndividual_Generalization(), "specific", null, 1, 1, GeneralizationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getGeneralizationLink_General(), this.getSubstanceIndividual(), this.getSubstanceIndividual_Specialization(), "general", null, 1, 1, GeneralizationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(modeCharacterizationLinkEClass, ModeCharacterizationLink.class, "ModeCharacterizationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getModeCharacterizationLink_Characterization(), theRefOntoUMLPackage.getCharacterization(), null, "characterization", null, 1, 1, ModeCharacterizationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getModeCharacterizationLink_Mode(), this.getModeIndividual(), this.getModeIndividual_Characterizes(), "mode", null, 1, 1, ModeCharacterizationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getModeCharacterizationLink_Bearer(), this.getPresentIndividual(), null, "bearer", null, 1, 1, ModeCharacterizationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(qualityCharacterizationLinkEClass, QualityCharacterizationLink.class, "QualityCharacterizationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getQualityCharacterizationLink_Quality(), this.getQualityIndividual(), this.getQualityIndividual_Characterizes(), "quality", null, 1, 1, QualityCharacterizationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getQualityCharacterizationLink_Bearer(), this.getPresentIndividual(), null, "bearer", null, 1, 1, QualityCharacterizationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(mediationLinkEClass, MediationLink.class, "MediationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMediationLink_Mediation(), theRefOntoUMLPackage.getMediation(), null, "mediation", null, 1, 1, MediationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMediationLink_Relator(), this.getRelatorIndividual(), this.getRelatorIndividual_Mediates(), "relator", null, 1, 1, MediationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMediationLink_Role(), this.getRoleIndividual(), null, "role", null, 1, 1, MediationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(materialAssociationLinkEClass, MaterialAssociationLink.class, "MaterialAssociationLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMaterialAssociationLink_MaterialAssociation(), theRefOntoUMLPackage.getMaterialAssociation(), null, "materialAssociation", null, 1, 1, MaterialAssociationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMaterialAssociationLink_End1(), this.getRoleIndividual(), null, "end1", null, 1, 1, MaterialAssociationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMaterialAssociationLink_End2(), this.getRoleIndividual(), null, "end2", null, 1, 1, MaterialAssociationLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(qualityParameterEClass, QualityParameter.class, "QualityParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(qualityRelationEClass, QualityRelation.class, "QualityRelation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getQualityRelation_Source(), this.getQualityParameter(), null, "source", null, 1, 1, QualityRelation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getQualityRelation_Target(), this.getQualityParameter(), null, "target", null, 1, 1, QualityRelation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getQualityRelation_Comparator(), this.getComparator(), "comparator", null, 1, 1, QualityRelation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		// Initialize enums and add enum literals
		initEEnum(ruleTypeEEnum, RuleType.class, "RuleType");
		addEEnumLiteral(ruleTypeEEnum, RuleType.CREATION);
		addEEnumLiteral(ruleTypeEEnum, RuleType.DELETION);
		addEEnumLiteral(ruleTypeEEnum, RuleType.CHANGE);

		initEEnum(comparatorEEnum, Comparator.class, "Comparator");
		addEEnumLiteral(comparatorEEnum, Comparator.EQUAL);
		addEEnumLiteral(comparatorEEnum, Comparator.NOT_EQUAL);
		addEEnumLiteral(comparatorEEnum, Comparator.LESS_THAN);
		addEEnumLiteral(comparatorEEnum, Comparator.GREATER_THAN);
		addEEnumLiteral(comparatorEEnum, Comparator.LESS_OR_EQUAL);
		addEEnumLiteral(comparatorEEnum, Comparator.GREATER_OR_EQUAL);

		// Create resource
		createResource(eNS_URI);

		// Create annotations
		// http://www.eclipse.org/OCL/Import
		createImportAnnotations();
		// http://www.eclipse.org/emf/2002/Ecore
		createEcoreAnnotations();
		// http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot
		createPivotAnnotations();
	}

	/**
	 * Initializes the annotations for <b>http://www.eclipse.org/OCL/Import</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createImportAnnotations() {
		String source = "http://www.eclipse.org/OCL/Import";	
		addAnnotation
		  (this, 
		   source, 
		   new String[] {
			 "RefOntoUML", "../../br.ufes.inf.nemo.ontouml.refontouml/model/RefOntoUML.ecore#/"
		   });
	}

	/**
	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createEcoreAnnotations() {
		String source = "http://www.eclipse.org/emf/2002/Ecore";	
		addAnnotation
		  (this, 
		   source, 
		   new String[] {
			 "invocationDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
			 "settingDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
			 "validationDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"
		   });	
		addAnnotation
		  (generalizationLinkEClass, 
		   source, 
		   new String[] {
			 "constraints", "conformantGeneralizationInstance"
		   });	
		addAnnotation
		  (modeCharacterizationLinkEClass, 
		   source, 
		   new String[] {
			 "constraints", "conformantCharacterizationInstance"
		   });	
		addAnnotation
		  (qualityCharacterizationLinkEClass, 
		   source, 
		   new String[] {
			 "constraints", "conformantMediationInstance"
		   });	
		addAnnotation
		  (mediationLinkEClass, 
		   source, 
		   new String[] {
			 "constraints", "conformantMediationInstance"
		   });	
		addAnnotation
		  (materialAssociationLinkEClass, 
		   source, 
		   new String[] {
			 "constraints", "conformantMaterialAssociationInstance"
		   });
	}

	/**
	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createPivotAnnotations() {
		String source = "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot";	
		addAnnotation
		  (getRuleset__DefiningIndividuals(), 
		   source, 
		   new String[] {
			 "body", "self.rules.definingLink.valueFor->union(self.rules.definingLink->collect(e|e.linksTo.valueFor))->asSet()"
		   });	
		addAnnotation
		  (getKindRuleset__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "kind"
		   });	
		addAnnotation
		  (getSubKindRuleset__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "subkind"
		   });	
		addAnnotation
		  (getRelatorRuleset__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "relator"
		   });	
		addAnnotation
		  (getPhasePartitionRuleset__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "partition.generalization->collect(e|e.general)->selectByKind(RefOntoUML::SortalClass)->any(true)"
		   });	
		addAnnotation
		  (getPhasePartitionRuleset__Bearer(), 
		   source, 
		   new String[] {
			 "body", "partition.generalization->collect(e|e.general)->selectByKind(RefOntoUML::SortalClass)->any(true)"
		   });	
		addAnnotation
		  (getPhasePartitionRuleset__Phases(), 
		   source, 
		   new String[] {
			 "body", "partition.generalization->collect(e|e.specific)->selectByKind(RefOntoUML::Phase)"
		   });	
		addAnnotation
		  (getQualityRuleset_Bearer(), 
		   source, 
		   new String[] {
			 "derivation", "quality.class"
		   });	
		addAnnotation
		  (getModeRuleset__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "mode"
		   });	
		addAnnotation
		  (getTransitionRule__OtherLinks(), 
		   source, 
		   new String[] {
			 "body", "before.parameters"
		   });	
		addAnnotation
		  (getTransitionRule_DefiningLink(), 
		   source, 
		   new String[] {
			 "derivation", "before.definingIndividualParameter"
		   });	
		addAnnotation
		  (getKindIndividual__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "kind"
		   });	
		addAnnotation
		  (getSubKindIndividual__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "subkind"
		   });	
		addAnnotation
		  (getRoleIndividual__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "role"
		   });	
		addAnnotation
		  (getPhaseIndividual__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "phase"
		   });	
		addAnnotation
		  (getRelatorIndividual__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "relator"
		   });	
		addAnnotation
		  (getModeIndividual__ClassifiedBy(), 
		   source, 
		   new String[] {
			 "body", "mode"
		   });	
		addAnnotation
		  (generalizationLinkEClass, 
		   source, 
		   new String[] {
			 "conformantGeneralizationInstance", "\n\t\t \t(generalization.specific = specific) and (generalization.general = general)"
		   });	
		addAnnotation
		  (modeCharacterizationLinkEClass, 
		   source, 
		   new String[] {
			 "conformantCharacterizationInstance", "\n\t\t \t(characterization.sourceEnd() = mode) and (characterization.targetEnd() = bearer)"
		   });	
		addAnnotation
		  (qualityCharacterizationLinkEClass, 
		   source, 
		   new String[] {
			 "conformantMediationInstance", "\n\t\t \t(bearer.classifiedBy().ownedMember->includes(quality.quality))"
		   });	
		addAnnotation
		  (mediationLinkEClass, 
		   source, 
		   new String[] {
			 "conformantMediationInstance", "\n\t\t \t(mediation.sourceEnd().type = relator) and (mediation.targetEnd().type = role)"
		   });	
		addAnnotation
		  (materialAssociationLinkEClass, 
		   source, 
		   new String[] {
			 "conformantMaterialAssociationInstance", "\n\t\t \t(self.materialAssociation.endType->includesAll(Set{end1,end2}))"
		   });
	}

} //OBSLPackageImpl
